第22届ACM并行编程原理与实践会议(ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP)于2017年2月4~8日在美国德克萨斯州奥斯汀举行。PPoPP是并行计算领域的重要会议之一,也是中国计算机学会(CCF)推荐的A类国际学术会议。PPoPP采用单轨(single track)模式,保证与会者可以听到所有的论文报告。近几年的参会者保持在200人左右,参会人员除了来自美国、欧洲、日本等发达地区之外,也有不少来自中国、印度等新兴经济体国家。这一趋势从会议地点也得到体现,2010年以来的8次会议有3次在美国之外的城市举办。
本次PPoPP会议仍然延续了与HPCA、CGO1两个会议在同一时间、同一地点举办的传统。这三个会议各有侧重,其中PPoPP主要是关于并行编程和并行处理,HPCA的重点在于体系结构,CGO则更关注编译优化和代码生成。参会者只需要注册其中任意一个会议即可参加三个会议。
今年的PPoPP共收到132篇投稿,录用29篇(其中3篇来自中国大陆地区),录用率为21.9%,与往年基本保持一致。其中,关于编程语言设计和编译器优化的工作有5篇;对并行计算程序在通用图形处理器(GPGPU)加速器件上执行效率的优化有9篇;关于并行计算程序的性能优化有4篇,包括支持新的语言特性,将原有的单机计算框架移植到多机环境等内容;余下的11篇论文工作更偏向于对具体的应用或编程行为提供支持,包括数据分析、程序建模、程序容错、事务性内存(transactional memory)等方面。通用图形处理器的相关研究是本次会议的重点研究内容,在本次会议的8场论文报告会中,有两场以通用图形处理器为主题。
特邀报告
PPoPP和CGO的主要研究内容都与编程语言和编译有关,尽管大部分论文并不直接讨论编程语言和编译器的实现。在PPoPP的第一场特邀报告“It¡¯s Time for a New Old Language”中,盖伊·斯蒂尔(Guy Steele)高屋建瓴地介绍了计算机编程语言的前世今生。盖伊·斯蒂尔是美国工程院院士,ACM Fellow,现任甲骨文实验室(Oracle Labs)软件架构师、编程语言研究组首席研究员,是编程语言设计与实现等领域的代表人物。他在报告中对过去几十年来研究者提出的各种各样的计算机编程语言做了总结和分析,讨论了类型系统、推导规则等概念的重要性。此外,他还对当前编程语言设计的相关论文中存在的术语使用不规范或不一致的问题进行了讨论,并提议建立一套统一的符号系统用于描述抽象的编程语言。
第二场特邀报告的主题为“Everyone Needs High Performance Computing”。主讲人史蒂夫·凯科勒(Steve Keckler)现任英伟达(Nvidia)公司体系结构研究组副主任,德克萨斯大学奥斯汀分校(UT Austin)计算机系兼职教授,ACM/IEEE Fellow,美国斯隆奖获得者。他讨论了高性能计算应用的未来趋势,总结了随着新应用对计算需求的急剧增加,计算机设计者所拥有的机会以及所面临的挑战。同时,他还分享了将技术转化为产品的个人经历,为科研成果的产业化提供了经验。
第三场报告主题为“The Computer Science Behind the Microsoft Cognitive Toolkit -- an Open Source Large-Scale Deep Learning Toolkit for Windows and Linux”。主讲人弗兰克·赛得(Frank Seide)现任微软亚洲研究院的高级研究员、微软深度学习框架CNTK的架构师,主要研究方向为深度神经网络在语音识别上的应用。他介绍了深度学习的基本概念,三类常见的深度学习模式(前馈神经网络、卷积神经网络、递归神经网络)以及深度学习在语音方面的应用。他还讨论了微软公司的深度学习框架CNTK在简化深度学习程序编写、提高深度学习程序性能方面的优势,深入介绍了CNTK如何将一个函数式、可求导的用户程序编译成一个GPU可执行的计算图,以及CNTK如何将训练分布到多GPU上。
最佳论文
麻省理工学院陶·沙德尔(Tao B. Schardl)等人的论文“Tapir: Embedding Fork-Join Parallelism into LLVM¡¯s Intermediate Representation”被评为本次会议的最佳论文。分支与汇集式并行(fork-join parallelism)是一种常见的并行范式,当前的主流编译器都把此类并行块直接转化成并行编程平台运行时的调用,阻碍了编译器对并行控制块之间的优化。解决这个问题通常被认为需要对编译器分析、代码转换做出大量调整。Tapir实现了一套编译器中间表示(IR),只需要对现有的代码分析、转换方法做出少许调整就可以让编译器进行并行控制块之间的优化。作者修改了LLVM源代码库的约6000行代码(LLVM本身有400万行源代码),使得LLVM可以将现有的对串行代码进行的编译器优化技术迁移到并行控制块之间,包括循环不变代码转移(loop-invariant-code motion)、公共子表达式消除(common-subexpression elimination)、尾递归消除(tail-recursion elimination)。
研究工作
通用图形处理器在近些年因在许多应用获得了很高的性能以及功耗比而崭露头角。在本次会议录用的文章中,有9篇的研究内容都是基于通用图形处理器。而在最佳论文提名论文报告会的4场报告中,有两场的工作也是基于通用图形处理器。这样的论文数量占比,体现出通用图形处理器是这场会议的重点。
北卡罗来纳州立大学陈国杨(Guoyang Chen,音译)等人的论文“EffiSha: A Software Framework for Enabling Efficient Preemptive Scheduling of GPU”针对数据中心和智能手机上的多任务应用场景,在现有GPU硬件条件下通过纯软件的方式实现低开销的支持抢断调度机制,从而支持多任务场景下GPU资源的时分复用,增加了系统总吞吐量。
科罗拉多州立大学尼玛尔·波阇波提(Nirmal Prajapati)等人的论文“Simple, Accurate, Analytical Time Modeling and Optimal Tile Size Selection for GPGPU Stencils”对通用图形处理器上的Stencil计算(一类在科研与工程领域都被广泛应用的并行程序)建立一组简单的解析函数以预测生成代码的执行时间,用于指导设置Stencil计算的块大小(tile size),并在实验中获得了9%的性能提升。
通用图形处理器对深度学习的兴起有重要的贡献,因为深度学习是一类适合于GPU计算、访存密集型应用。当前深度学习的计算主要都是由GPU来完成的。
Caffe是一个基于GPU加速的深度学习框架,其特点是用户不需要直接编程,只需要设计好网络结构,Caffe即可自动地帮助用户训练神经网络。Caffe不仅在学术界具有重要影响力,同时在工业界也具有广泛应用。俄亥俄州立大学阿马·阿哈默德·阿万(Ammar Ahmad Awan)等人的论文“S-Caffe: Co-designing MPI Runtimes and Caffe for Scalable Deep Learning on Modern GPU Clusters”基于消息传递接口(Message Passing Interface, MPI)构建了一个多机版本的Caffe,称为S-Caffe。他们采用协同设计的方法把深度学习的领域知识结合到底层MPI的集合通信设计中,提出了在机器学习场景下更优的层次化规约(hierarchical reduction)集合通信方法,将S-Caffe成功扩展到160块GPU卡上,与未做协同设计的MVAPICH2相比,获得了2.6倍的加速比。
论文验证环节
与过去几年相同,今年的PPoPP会议投稿仍然包括一个额外的环节,即对被录用的论文的程序或实验结果进行可重复性评价(artifact evaluation)。作者可以自愿提交额外的材料,包括代码和相关文档,由会议方组织专人对论文结果的可重复性进行评价。可重复性达到一定程度的文章会被加上一个认证标志。与PPoPP 2016相比,今年通过该认证的论文篇数从12篇上升到15篇(其余的可能未参与或未通过评价)。
PPoPP上中国的影子
我们尝试收集并总结了自2010年开始第一作者隶属单位位于中国的文章,近8年一共有16篇中国单位的文章被录用。在这16篇文章中,有6篇文章是关于GPU优化或者异构计算,有3篇文章是大规模并行程序的模拟、确定性重放与性能预测,今年有1篇提出了一种新的MPI程序容错方法。
长期以来,PPoPP会议论文的研究方向集中在并行程序和并行系统上,包括多核/众核系统、多线程编程、异构编程等方面。最近几届PPoPP会议论文的研究领域也有一些变化。近年来,以GPU为代表的加速器件得到广泛关注,尤其最近几年,GPU的应用场景不再局限于大规模并行计算机和商用服务器上,而是逐渐普及到个人电子设备甚至嵌入式设备中。对GPU上的程序性能进行优化已经成为一个热点问题。由于加速器件的体系结构更新换代非常快,不断地出现新的问题,如现场可编程门阵列(FPGA)等,因此对加速器件上的程序性能进行优化将是未来几年的重点。
同时,随着深度学习、虚拟现实等方向对大数据处理能力的需求不断增长,并行计算相关话题迎来了新的研究热潮。一些问题的规模已经大到无法用单个GPU甚至单个服务器进行处理。将已有广泛用户群的单GPU或单机编程框架移植到多GPU或多机环境,也是并行编程领域在未来的一个重要研究方向。在并行编程日益重要的未来,增强编译器对并行程序的支持也将成为一项必不可少同时也富有挑战的工作。
1IEEE International Symposium on High-Performance Computer Architecture, IEEE/ACM International Symposium on Code Generation and Optimization。
所有评论仅代表网友意见